Портал Semantic MDM поддерживает возможность совместной компиляции и сборки расширений вместе с базовым приложением. Такой подход сохраняет преимущества плагинной архитектуру со слабой связью между кодом портала и кодом расширений и дополнительно позволяет значительно уменьшить размер файлов расширений за счет совместной процедуры оптимизации сборки, а также повторного использования расширениями большей части модулей базового приложения (фабрик для создания компонентов и модулей).
Недостатком данного подхода является необходимость наличия кода базового приложения при сборке расширений, а также наличие ссылок в базовом приложении на расширения (пусть и на уровне конфигурации, а не кода), что противоречит концепции плагинной архитектуры. Также нужно иметь в виду, что после выхода новой версии портала Semantic MDM процедуру совместной компиляции придется перезапустить.
Процедура совместной компиляции состоит из следующих шагов:
Скопировать исходный код расширения в каталог src/built-in-plugins;
В файле конфигурации angular.jsonв раздел architect.build.options.lazyModules проекта sdi-web-client добавить ссылку на корневой модуль расширения (модуль, помеченный аннотацией @M2Plugin()) в формате:
"src/built-in-plugins/<путь_до_модуля>/<наименование_файла_модуля>.module"
Добавить ссылку на корневой модуль расширения в файле built-in-plugins-registry.ts в формате:
"src/built-in-plugins/<путь_до_модуля>/<наименование_файла_модуля>.module#< наименование_модуля>"
Запустить процесс сборки портала с расширениями:
gulp dist
По окончании сборки необходимо обновить дистрибутив портала Semantic MDM (dist/sdi-web-client.war) на стедне и активировать расширение на странице настроек в разделе Встроенные расширения клиента:
